home *** CD-ROM | disk | FTP | other *** search
/ Apple Reference & Presentation Library 1993 Spring / ARPL-Spring-93-Partner-Edition.iso / Applications / Spreadsheets / Claris Resolve Demo / Resolve Samples / External Examples / SoundInput.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-07-17  |  8.2 KB  |  223 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        SoundInput.h
  3.  
  4.     Copyright:    © 1986-1990 by Apple Computer, Inc., all rights reserved.
  5.     9/19/90    tasn    made minor changes to work w/ Think C
  6.  
  7. */
  8.  
  9.  
  10.  
  11. #ifndef __SOUNDINPUT__
  12. #define __SOUNDINPUT__
  13.  
  14. #ifdef applec
  15. #ifndef __TYPES__
  16. #include <Types.h>
  17. #endif
  18. #endif
  19.  
  20.  
  21. /* Error codes */
  22.  
  23. #define siNoSoundInHardware        -220            /* ••• not used anywhere */
  24. #define siBadSoundInDevice        -221            /* invalid index passed to SoundInGetIndexedDevice */
  25. #define siNoBufferSpecified        -222            /* returned by synchronous SPBRecord if nil buffer passed */
  26. #define siInvalidCompression    -223            /* invalid compression type */
  27. #define siHardDriveTooSlow        -224            /* hard drive too slow to record to disk */
  28. #define siInvalidSampleRate        -225            /* invalid sample rate */
  29. #define siInvalidSampleSize        -226            /* invalid sample size */
  30. #define siDeviceBusyErr            -227            /* input device already in use */
  31. #define siBadDeviceName            -228            /* input device could not be opened */
  32. #define siBadRefNum                -229            /* invalid input device reference number */
  33. #define siInputDeviceErr        -230            /* input device hardware failure */
  34. #define siUnknownInfoType        -231            /* invalid info type selector (returned by driver) */
  35. #define siUnknownQuality        -232            /* invalid quality selector (returned by driver) */
  36.  
  37. #define siDeviceIsConnected         1                /* input device is connected and ready for input */
  38. #define siDeviceNotConnected     0                /* input device is not connected */
  39. #define siDontKnowIfConnected    -1                /* can't tell if input device is connected */
  40.  
  41. #define siReadPermission         0                /* permission passed to SPBOpenDevice */
  42. #define siWritePermission         1                /* permission passed to SPBOpenDevice */
  43.  
  44. /* Info Selectors for Sound Input Drivers */
  45.  
  46. #define siDeviceConnected        'dcon'            /* input device connection status */
  47. #define siRTFOnOff                'rtf '            /* record to file state */
  48. #define siAGCOnOff                'agc '            /* automatic gain control state */
  49. #define siPlayThruOnOff            'plth'            /* playthrough state */
  50. #define siTwosComplementOnOff    'twos'            /* two's complement state */
  51. #define siLevelMeterOnOff        'lmet'            /* level meter state */
  52. #define siPauseRecording        'paus'            /* recording paused state */
  53. #define siRecordingQuality        'qual'            /* recording quality */
  54. #define siVoxRecordInfo            'voxr'            /* VOX record parameters */
  55. #define siVoxStopInfo            'voxs'            /* VOX stop parameters */
  56. #define siNumberChannels        'chan'            /* current number of channels */
  57. #define siSampleSize            'ssiz'            /* current sample size */
  58. #define siSampleRate            'srat'            /* current sample rate */
  59. #define siCompressionType        'comp'            /* current compression type */
  60. #define siCompressionFactor        'cmfa'            /* current compression factor */
  61. #define siCompressionHeader        'cmhd'            /* return compression header */
  62. #define siUserInterruptProc        'user'            /* user interrupt routine */
  63. #define siDeviceName            'name'            /* input device name */
  64. #define siDeviceIcon            'icon'            /* input device icon */
  65. #define siDeviceBufferInfo        'dbin'            /* size of interrupt buffer */
  66. #define siSampleSizeAvailable    'ssav'            /* sample sizes available */
  67. #define siSampleRateAvailable    'srav'            /* sample rates available */
  68. #define siCompressionAvailable    'cmav'            /* compression types available */
  69. #define siChannelAvailable        'chav'            /* number of channels available */
  70. #define siInitializeDriver        'init'            /* initialize driver */
  71. #define siCloseDriver            'clos'            /* close driver */
  72. #define siAsync                    'asyn'            /* asynchronous capability */
  73. #define siOptionsDialog            'optd'            /* display options dialog */
  74.  
  75. /* Qualities */
  76.  
  77. #define siBestQuality            'best'
  78. #define siBetterQuality            'betr'
  79. #define siGoodQuality            'good'
  80.  
  81. /* Sound Input Parameter Block */
  82.  
  83. typedef struct {
  84.     long            inRefNum;                    /* reference number of sound input device */
  85.     unsigned long    count;                        /* number of bytes to record */
  86.     unsigned long    milliseconds;                /* number of milliseconds to record */
  87.     unsigned long    bufferLength;                /* length of buffer in bytes */
  88.     Ptr                 bufferPtr;                    /* buffer to store sound data in */
  89.     ProcPtr         completionRoutine;            /* completion routine */
  90.     ProcPtr         interruptRoutine;            /* interrupt routine */
  91.     long            userLong;                    /* user-defined field */
  92.     OSErr            error;                        /* error */
  93.     long            unused1;                    /* reserved - must be zero */
  94. } SPB, *SPBPtr;
  95.  
  96. /* Function selectors for the Sound Input calls.
  97.    High byte = # words of parameters. */
  98.  
  99. #define siToolNum                20                /* tool number of for SndDispVersion call */
  100. #define    siMOVEL                    0x203C            /* MOVE.L    #selector,D0 */
  101.  
  102. #define siVersion                (0*256)+0
  103. #define siSndRecord                (8*256)+4
  104. #define siSignInDevice            (3*256)+12
  105. #define siSignOutDevice            (1*256)+16
  106. #define siGetIndexedDevice        (5*256)+20
  107. #define siOpenDevice            (5*256)+24
  108. #define siCloseDevice            (2*256)+28
  109. #define siRecord                (3*256)+32
  110. #define siPauseRecordingR        (2*256)+40
  111. #define siResumeRecording        (2*256)+44
  112. #define siStopRecording            (2*256)+48
  113. #define siGetRecordingStatus    (14*256)+52
  114. #define siGetDeviceInfo            (6*256)+56
  115. #define siSetDeviceInfo            (6*256)+60
  116. #define siMilliSecondsToBytes    (4*256)+64
  117. #define siBytesToMilliSeconds    (4*256)+68
  118. #define siSetupSndHeader        (13*256)+72
  119. #define siSetupAIFFHeader        (11*256)+76
  120.  
  121.  
  122. /* SPBVersion (0 parameter words) */
  123. pascal unsigned long
  124. SPBVersion(void)
  125.     = {siMOVEL,siVersion,siToolNum,0xA800};
  126.  
  127. /* SndRecord (8 parameter words) */
  128. pascal OSErr
  129. SndRecord(ProcPtr filterProc, Point corner, OSType quality, Handle *sndHandle)
  130.     = {siMOVEL,siSndRecord,siToolNum,0xA800};
  131.  
  132. /* SPBSignInDevice (3 parameter words) */
  133. pascal OSErr 
  134. SPBSignInDevice(short deviceRefNum, Str255 deviceName)
  135.     = {siMOVEL,siSignInDevice,siToolNum,0xA800};
  136.  
  137. /* SPBSignOutDevice (1 parameter words) */
  138. pascal OSErr
  139. SPBSignOutDevice(short deviceRefNum)
  140.     = {siMOVEL,siSignOutDevice,siToolNum,0xA800};
  141.  
  142. /* SPBGetIndexedDevice (5 parameter words) */
  143. pascal OSErr 
  144. SPBGetIndexedDevice(short count, Str255 deviceName, Handle *deviceIconHandle)
  145.     = {siMOVEL,siGetIndexedDevice,siToolNum,0xA800};
  146.  
  147. /* SPBOpenDevice (5 parameter words) */
  148. pascal OSErr 
  149. SPBOpenDevice(Str255 deviceName, short permission, long *inRefNum)
  150.     = {siMOVEL,siOpenDevice,siToolNum,0xA800};
  151.  
  152. /* SPBCloseDevice (2 parameter words) */
  153. pascal OSErr 
  154. SPBCloseDevice(long inRefNum)
  155.     = {siMOVEL,siCloseDevice,siToolNum,0xA800};
  156.  
  157. /* SPBRecord (3 parameter words) */
  158. pascal OSErr 
  159. SPBRecord(SPBPtr inParamPtr, Boolean asynchFlag)
  160.     = {siMOVEL,siRecord,siToolNum,0xA800};
  161.  
  162. /* SPBPauseRecording (2 parameter words) */
  163. pascal OSErr 
  164. SPBPauseRecording(long inRefNum)
  165.     = {siMOVEL,siPauseRecordingR,siToolNum,0xA800};
  166.  
  167. /* SPBResumeRecording (2 parameter words) */
  168. pascal OSErr 
  169. SPBResumeRecording(long    inRefNum)
  170.     = {siMOVEL,siResumeRecording,siToolNum,0xA800};
  171.  
  172. /* SPBStopRecording (2 parameter words) */
  173. pascal OSErr 
  174. SPBStopRecording(long inRefNum)
  175.     = {siMOVEL,siStopRecording,siToolNum,0xA800};
  176.  
  177. /* SPBGetRecordingStatus (14 parameter words) */
  178. pascal OSErr 
  179. SPBGetRecordingStatus(    long            inRefNum,
  180.                         short            *recordingStatus,
  181.                         short            *meterLevel,
  182.                         unsigned long    *totalSamplesToRecord,
  183.                         unsigned long    *numberOfSamplesRecorded,
  184.                         unsigned long    *totalMsecsToRecord,
  185.                         unsigned long    *numberOfMsecsRecorded )
  186.     = {siMOVEL,siGetRecordingStatus,siToolNum,0xA800};
  187.  
  188. /* SPBGetDeviceInfo (6 parameter words) */
  189. pascal OSErr 
  190. SPBGetDeviceInfo(long inRefNum, OSType infoType, char *infoData)
  191.     = {siMOVEL,siGetDeviceInfo,siToolNum,0xA800};
  192.  
  193. /* SPBSetDeviceInfo (6 parameter words) */
  194. pascal OSErr 
  195. SPBSetDeviceInfo(long inRefNum, OSType infoType, char *infoData)
  196.     = {siMOVEL,siSetDeviceInfo,siToolNum,0xA800};
  197.  
  198. /* SPBMilliSecondsToBytes (4 parameter words) */
  199. pascal OSErr 
  200. SPBMilliSecondsToBytes(long inRefNum, long *milliSeconds)
  201.     = {siMOVEL,siMilliSecondsToBytes,siToolNum,0xA800};
  202.  
  203. /* SPBBytesToMilliSeconds (4 parameter words) */
  204. pascal OSErr 
  205. SPBBytesToMilliSeconds(long inRefNum, long *byteCount)
  206.     = {siMOVEL,siBytesToMilliSeconds,siToolNum,0xA800};
  207.  
  208. /* SetupSndHeader (13 parameter words) */
  209. pascal OSErr
  210. SetupSndHeader(Handle sndH, short numChannels, Fixed sampleRate,
  211.                 short sampleSize, OSType compressionType,
  212.                 short baseNote, unsigned long numBytes, short *headerLen)
  213.     = {siMOVEL,siSetupSndHeader,siToolNum,0xA800};
  214.  
  215. /* SetupAIFFHeader (11 parameter words) */
  216. pascal OSErr
  217. SetupAIFFHeader(short fRefNum, short numChannels, Fixed sampleRate,
  218.                 short sampleSize, OSType compressionType,
  219.                 unsigned long numBytes, unsigned long numFrames)
  220.     = {siMOVEL,siSetupAIFFHeader,siToolNum,0xA800};
  221.  
  222. #endif
  223.